PLDs have increasingly proliferated in many areas of technology, such as data processing and signal processing applications. The inherent flexibility of the PLD and the ability to re-configure the PLD have in part led to their popularity. System designers and even system end-users can program the PLDs and reconfigure the functionality of part or all of the system. Re-configuring the system avoids costly and time-consuming re-design of the system or its various components or sub-systems.
Data and signal processing applications often entail operations on numbers. One typical operation involves comparing or sorting numbers and selecting one or more numbers or data according to prescribed criteria. Many data signal processing applications, for example, median filtering applications, use compare or sort and select operations. Conventional or brute-force implementation of compare, sort, and median filtering in a PLD may use the PLD resources inefficiently. As a consequence, the system cost and complexity may increase.
Furthermore, an inefficient implementation may fail to respond in a relatively short period of time and with adequate throughput, for example, in real-time applications. A need exists for compare, sort, and median filtering circuitry and methods that make efficient use of PLD resources.